package co.edu.eam.laapuesta.ejb;

import java.util.Date;
import java.util.List;

import javax.ejb.LocalBean;
import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;

import co.edu.eam.laapuesta.persistencia.dao.GiroDAO;
import co.edu.eam.laapuesta.persistencia.entidades.Ciudad;
import co.edu.eam.laapuesta.persistencia.entidades.Cliente;
import co.edu.eam.laapuesta.persistencia.entidades.Giro;
import co.edu.eam.laapuesta.persistencia.entidades.Reclamo_Giro;
import co.edu.eam.laapuesta.persistencia.entidades.Sucursal;

/**
 * Session Bean implementation class GiroEJB
 */
@Stateless
@LocalBean
public class GiroEJB {

	GiroDAO giroDao;

	@PersistenceContext(name = "LaApuestaJPA")
	private EntityManager entityManager;

	/**
	 * Default constructor.
	 */
	public GiroEJB() {
		// TODO Auto-generated constructor stub
	}

	public void crearGiro(long id, double monto, Ciudad ciudadOrigen,
			Ciudad ciudadDestino, Cliente clienteOrigen,
			Cliente clientedestino, boolean isNacional, Sucursal sucursal,
			Reclamo_Giro reclamo) throws Exception {

		Giro giro = new Giro();

		giro.setCiudad_destino(ciudadDestino);
		giro.setCiudad_origen(ciudadOrigen);
		giro.setCliente_destino(clientedestino);
		giro.setCliente_origen(clienteOrigen);
		giro.setid(id);
		giro.setIs_nacional(isNacional);
		giro.setsucursal(sucursal);
		giro.setmonto(monto);

		giroDao.crearGiro(giro);
	}

	public Giro buscarGiro(long id) throws Exception {

		return giroDao.buscarGiro(id);
	}

	public List<Giro> listarGiro() throws Exception {

		if (giroDao.listarGiros() == null) {
			throw new Exception("no hay giros");
		}
		return giroDao.listarGiros();
	}

	public List<Giro> listarGiroXSucursal(Sucursal sucursal) throws Exception {

		if (giroDao.listarGiroXSucursal(sucursal) == null) {
			throw new Exception("No hya giros enviardos");
		}
		return giroDao.listarGiroXSucursal(sucursal);
	}

	public void crearReclamosGiro(Date fecha, int hora, Ciudad ciudad_reclamo,
			Giro giro, Sucursal sucursal) throws Exception {

		Reclamo_Giro reclamo = new Reclamo_Giro();

		reclamo.setCiudad_reclamo(ciudad_reclamo);
		reclamo.setFecha(fecha);
		reclamo.setGiro(giro);
		;
		reclamo.setSucursal(sucursal);

		giroDao.crearReclamosGiro(reclamo);
	}

	public Reclamo_Giro buscarReclamosGiro(long id) throws Exception {

		return giroDao.buscarReclamoGiro(id);
	}

	public List<Reclamo_Giro> listarReclamoGiro() throws Exception {

		if (giroDao.listarReclamosGiros() != null) {
			throw new Exception("no hay reclamos realizados");
		}
		return giroDao.listarReclamosGiros();
	}
}
